1. Field of the Invention
This invention relates to the field of electronics, and in particular to a device that facilitates the interconnection of devices using an I2C interface.
2. Description of Related Art
The Inter Integrated Circuit (I2C) bus developed by Philips Corporation allows integrated circuits to communicate directly with each other via a simple bi-directional 2-wire (plus ground) bus. A device connects to each of the two wires on the bus, one (SData) for the communication of data, and the other (SClk) for the control and synchronization of the communication of data between the devices. Each device is connected in parallel to each of the other devices. Each of the bus lines, SData and SClk, function as a wired-AND of all the lines on the bus. The output of each device is configured as an open-collector/open-drain device, and one or more pull-up resistors maintain a xe2x80x98softxe2x80x99 logic high value on the bus while the bus is in the quiescent state. When a device desires access to the bus, the device pulls the bus to a logic low value, via the open-collector/open-drain device that is placed in a conductive state to ground potential.
To facilitate a high speed data transfer, the I2C specification limits the maximum capacitive loading on the bus, thereby limiting the maximum length of the bus. The specified maximum capacitive loading is 400 pf, which limits the bus length to a few meters. The 82B715 integrated circuit from Philips Semiconductors is an I2C bus extender that allows for routing of the bus beyond the specified maximum length. The 82B715 offers a current gain of ten from the input to the output, thereby providing a capacitive reduction of ten to the bus on the input side of the bus extender. By placing a bus extender at each end of a long length of wire, only one tenth of the capacitance of the wire appears as a load to the I2C bus or device at each end of the long length of wire. Note, however, that because of the current gain, the output of each 82B715 at either end of the long length of wire is not I2C compatible, because the I2C specification also limits the maximum current that any device can place on the I2C bus. Note, also, that this lack of I2C-compatibility provides an advantage with regard to the choice of media between the pair of 82B715s. In lieu of the long length of wire between the pair of 82B715s, for example, a fiber optic or other media can be used.
A repeater is distinguished from an extender in that a repeater is conventionally defined as a device that reshapes a transmitted signal along the transmission path, and supports the transmission protocol and constraints on both sides of the repeater. A repeater is placed, for example, at the midpoint of a length of bus line, to reduce the loading on the half of the bus at its input, and to condition the signal for transmission to the other half of the bus. A typical un-idirectional repeater comprises an input inverter that places little load on the input, and an output inverter comprising a driving inverter that is capable of driving a substantial load.
In a bi-directional configuration, wherein the same wire is used to both transmit and receive, a bus repeater appears as a pair of oppositely-oriented uni-directional repeaters that are wired in parallel to each other. Because the output of one uni-directional repeater is connected to the input of the other uni-directional repeater, a bi-directional repeater must be configured to distinguish an externally generated event on the bus from an internally generated event, to preclude a latch-up. Such a latch-up is caused when an input event that is propagated in one direction is interpreted as an input event from the other direction, and re-propagated to the original input to the bi-directional repeater. When the originator of the event ceases the event, this cessation must also be propagated in the same direction as the propagation of the original input event.
Conventional bi-directional repeaters typically include control logic that determines which side of the repeater is receiving a driving signal, and thereafter blocks any input from the opposite side of the repeater until the first side of the repeater no longer receives the driving signal. FIG. 1 is an example block diagram of a conventional bi-directional repeater 100, such as taught by U.S. Pat. No. 5,923,187, xe2x80x9cMULTIDIRECTIONAL DATA TRANSMISSION DEVICExe2x80x9d, issued on Jul. 13, 1999 for Philippe Maugers, assigned to U.S. Philips Corporation, and incorporated by reference herein. Two uni-directional buffers Ca, Cb are controlled by two control devices Ga, Gb. When a control device Ga, Gb is enabled, a path is provided between the input I and the output O of the control device; otherwise, the path is blocked between the input I and the output O. Initially, with both inputs A and B in the inactive state, both gates Ga and Gb are enabled, thereby connecting the node A to the input of buffer Cb, and connecting the node B to the input of buffer Ca. The buffers Ca, Cb are non-inverting, and therefore the output of each is the inactive state, consistent with each node A, B. It is assumed herein that an active state overcomes the presence of an inactive state on the bus, such as a bus that operates as a logic-AND gate, and the active state is low. Alternatively, albeit rarely used, the active state may be high, and the bus operates as a logic-OR gate.
When one of the nodes, node A for example, transitions to the active state, via a driving signal from an external device 110a, the control device Ga recognizes this transition as the xe2x80x9cfirstxe2x80x9d transition, and asserts its F output, which disables the control device Gb. Because Ga remains enabled, the active state of node A is communicated to node B, and the external devices 110b, via the enabled device Ga and the buffer Cb. This active state at node B, however, is not communicated to the buffer Ca, because the gate Gb is disabled. Thus, node A is free to return to the inactive state when the external stimuli from device 110a that drove it to the active state is removed. After node A returns to the inactive state, and this inactive state is communicated to node B and the external devices 110b, control device Ga re-enables device Gb.
Note that, in the above example, if the control device Gb had been enabled, the propagated active state at node B would have been coupled to the buffer Ca, thereby internally driving the node A into the active state. Thereafter, when the external stimuli from device 110a that initially drove node A into the active state is removed, node A would have remained in the active state, being driven by the now-latched active state from node B through devices Gb and Ca. By decoupling the input B on one side of the repeater 100 when the other side A of the repeater 100 is active, via the control device Ga, this latching problem is avoided.
As is evident to one of ordinary skill in the art, the conventional repeater that decouples one side of the repeater when the other side is active presumes that only one side of the repeater is going to be active at any point in time. Or, if both sides are active, the first side to be active prevails. If, in the prior example, node B is externally driven to the active state by a device 110b, this active state will not be propagated to node A until after node A re-enters the inactive state and re-enables the control device Gb. Thus, on the B side of the repeater 100, a continuous active state will be present from the time that node A enters the active state until the time that the node B leaves the active state. Whereas, on the A side of the repeater 100, node A will be driven to the active state by its external stimuli, then enter the inactive state when the stimuli is removed, then re-enter the active state when the control device Gb is re-enabled, until the time that the node B leaves the active state. That is, devices 110a on the A side of the repeater 100 will see a transition that the devices 110b on the other side of the repeater 100 will not see. This inconsistency will, in general, lead to anomalous performance, because the repeater 100 is not truly acting as a mere reshaping device.
Preferably, a repeater is xe2x80x9ctransparentxe2x80x9d to devices on either side. That is, although a repeater allows for improved bus performance, its presence on the bus should be undetectable. If the bus is a wired-AND bus, for example, a logic-low value must be propagated and maintained at both sides of the repeater for as long as any of the devices on the bus are driving the bus to the logic-low value. Thus, in the example above, the operation of the repeater 100 relative to the B side properly reflects a wired-AND operation, whereas the operation on the A side of the repeater 100 does not.
Some specifications, and in particular the I2C specification, rely upon a consistent performance in the presence of a simultaneous assertion of the active state by more than one device. In the I2C specification, for example, the synchronization of the clock signal among multiple devices is determined by the time that a first device pulls the bus low, and the time that a last device ceases pulling the bus low. The prior art repeater, discussed above, fails to comply with this specification, or any specification that is based on an active-low, wired-AND operation.
It is an object of this invention to provide a bi-directional repeater device for a wired bus that is substantially transparent to devices on the bus. It is a further object of this invention to provide a bi-directional repeater device that provides a wired-AND function to the bus on both sides of the repeater device. It is a further object of this invention to provide a bi-directional repeater device that has an improved turn-on transition time.
These objects and others are achieved by providing a repeater that employs multiple threshold detectors to distinguish between signals from external devices and signals generated within the repeater. Signals that are sent from the repeater are configured to be between two threshold levels, so that a detector at one threshold level will detect an active signal, but the detector at the other threshold level will not detect an active signal. When an external signal is received on one side (A) of the repeater, it is propagated to the other side (B) of the repeater, and at the same time, the other side (B) of the repeater is configured to only propagate external signals back to the first side (A). In this manner, the internally generated signal from one side (A) is not propagated back to the same side (A), and a latch-up is avoided. In like manner, when an external signal is received at the other side (B), the first side (A) of the repeater is configured to propagate only externally generated signals. If both sides of the repeater are externally driven, the active signal is propagated to both sides of the repeater, thereby emulating the response that would be provided by a wired bus without a repeater.